昨天我們介紹了 Dockerfile 中常用的 Instructions ,今天,就讓我們來上手這些指令,並實際建置出一個 間單的Nginx 服務頁面吧!
首先,讓我們先回想之前架出一個網站需要的步驟有哪些:
將之前的服務建置過程,轉換到 Docker ,會成為這樣:
Dockerfile 的第一行,顯而易見的為 FROM nginx
,從 Docker 的 Registry 抓取 NGINX 的映像檔作為我們的 Parent Image
。
假設我們的 nginx.conf 已存在我們的宿主的文件目錄中,抓完 nginx 後的第二步驟,就是要想辦法把我們的文件,移到 docker 裡:
Copy 東西到docker 裡
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY index.html /usr/share/nginx/html
合在一起變成這樣:
FROM nginx
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY index.html /usr/share/nginx/html
最後則是編譯映像檔的部分:利用終端機進入到包含 dockerfile、index.html、和nginx.conf的資料夾
接著下指令:
docker build -t iron2022 .
docker build
: 為建置映像的指令-t
:自訂映像的名稱和版本,若無版本會以 lastest
做為預設值.
:為 dockerfile 的路徑若沒有跳錯,就可啟動容器了
docker run --name iron2022 -p 8080:80 -d iron2022
docker run
--name
:可指定 container 的名字-p
:轉發通訊埠,Host:Container
,前者為宿主的實體 port,後者為 container 的虛擬 port
-d
:指定映像,在上一步已將映像命名為 iron2022
,因此這邊也一樣是 iron2022
執行完之後,打開瀏覽器輸入 localhost:8080
,就可以看到我們建立的網站了!
server{
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
charset utf-8;
access_log /var/log/nginx/access_log;
error_log /var/log/nginx/error_log;
}
<!--index.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>nginx in docker</title>
</head>
<body>
Hello Docker!
</body>
</html>